package file;

import java.io.File;
import java.io.FileFilter;

/**
 *  filter:过滤器
 *  accept:接受
 *  有条件的获取一个目录中的子项
 *  File有一个重载的listFiles方法。允许我们传入一个文件过滤器，
 *  并在该过滤器上定义过滤的条件，之后listFiles执行完毕会将目录中
 *  所有满足过滤器要求的子项进行返回
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        //获取当前目录中名字里含有字母"o"的子项
        File dir = new File(".");

        if (dir.isDirectory()){
            /*
                File listFiles(FileFilter filter)
            */
            FileFilter filter = new FileFilter() {
                public boolean accept(File file) {
                    System.out.println("正在过滤："+file.getName());
                    return file.getName().contains("o");//包含o
                }
            };
            File[] subs = dir.listFiles(filter);
            System.out.println("当前目录中共包含"+subs.length+"个子项");
            for (int i=0;i< subs.length;i++){
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}
/*
class MyFilter implements FileFilter{

    public boolean accept(File file) {
        //过滤条件是名字中含有"o"的
        String name = file.getName();//获取该file表示的文件或目录的名字

//        String regex = ".*o.*"; //正则表达式写法
//        boolean match = name.matches(regex);
//        name.indexOf("o")>=0;//字符串方法。返回-1则表示没有

//       boolean cintains = name.contains("o");//包含

        return name.contains("o");
    }
}

 */
